/**
 * 
 */
package rer.persistencia;

import java.sql.*;

import rer.model.Empresa;
import rer.util.ConexaoJDBC_mysql;


/**
 * Programa que
 * 
 * @author Jos� C M Rodrigues
 * @since 15/11/2014
 * @version 1.0
 */
public class EmpresaDAO implements IEmpresaDAO{

	
	// Vari�veis da classe
	private Statement statement;
	private PreparedStatement preparedStatement;
	private ResultSet resultSet;
	private String query;
	private Empresa empresa;
	private Connection conexao = ConexaoJDBC_mysql.getConnection();
	
	@Override
	public Boolean cadastrar(Empresa empresa) {
		
		try{
			
			query = "insert into db_ceirr.dadosempresa values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
			preparedStatement = conexao.prepareStatement(query);
			preparedStatement.setString(1, empresa.getNomeEmpresa());
			preparedStatement.setString(2, empresa.getCnpjEmpresa());
			
			if(empresa.getIeEmpresa() != null){
				preparedStatement.setString(3, empresa.getIeEmpresa());
			}else{
				preparedStatement.setNull(3, Types.NULL);
			}
			
			preparedStatement.setString(4, empresa.getTelEmpresa());
			preparedStatement.setString(5, empresa.getRua());
			preparedStatement.setString(6, empresa.getBairro());
			preparedStatement.setInt(7, empresa.getNumero());
			
			if (empresa.getComplemento() != null){
				preparedStatement.setString(8, empresa.getComplemento());
			}else{
				preparedStatement.setNull(8, Types.NULL);
			}
			
			preparedStatement.setString(9, empresa.getCep());
			preparedStatement.setString(10, empresa.getCidade());
			preparedStatement.setString(11, empresa.getEstado());
			
			preparedStatement.execute();
			
			return true;
			
		}catch(SQLException erro){
			System.out.println(erro.getMessage());
		}finally {
			
			try{
				preparedStatement.close();
				//System.out.println("\nStatement fechado");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("\n Erro ao fechar o objeto statement.");
			}
		}
		
		return false;
		
	}
	
	@Override
	public Empresa listar() {
		
		empresa = null;
		
		try{
			
			query = "SELECT * FROM db_ceirr.dadosempresa";
			statement = conexao.createStatement();
			resultSet = statement.executeQuery(query);
			
			if (resultSet.next()){
				empresa = new Empresa();
				empresa.setNomeEmpresa(resultSet.getString("nomeEmpresa"));
				empresa.setCnpjEmpresa(resultSet.getString("cnpjEmpresa"));
				empresa.setIeEmpresa(resultSet.getString("ieEmpresa"));
				empresa.setRua(resultSet.getString("rua"));
				empresa.setNumero(resultSet.getInt("numero"));
				empresa.setBairro(resultSet.getString("bairro"));
				empresa.setCep(resultSet.getString("cep"));
				empresa.setCidade(resultSet.getString("cidade"));
				empresa.setEstado(resultSet.getString("estado"));
				empresa.setTelEmpresa(resultSet.getString("telEmpresa"));
			}
			
		}catch(SQLException erro){
			System.out.println(erro.getMessage());
		}
		
		try {
			statement.close();
			//System.out.println("\nStatement fechado");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("\n Erro ao fechar o objeto statement.");
		}
		//System.out.println("\nSucesso pesquisa");
		return empresa;
		
	}

	@Override
	public Boolean editar(Empresa empresa) {
		
		try{
			
			query = "update db_ceirr.dadosempresa set nomeEmpresa=?, cnpjEmpresa=?, ieEmpresa=?, telEmpresa=?, rua=?, bairro=?, numero=?, complemento=?, cep=?, cidade=?, estado=? where idEmpresa = 1";
			preparedStatement = conexao.prepareStatement(query);
			preparedStatement.setString(1, empresa.getNomeEmpresa());
			preparedStatement.setString(2, empresa.getCnpjEmpresa());
			
			if(empresa.getIeEmpresa() != null){
				preparedStatement.setString(3, empresa.getIeEmpresa());
			}else{
				preparedStatement.setNull(3, Types.NULL);
			}
			
			preparedStatement.setString(4, empresa.getTelEmpresa());
			preparedStatement.setString(5, empresa.getRua());
			preparedStatement.setString(6, empresa.getBairro());
			preparedStatement.setInt(7, empresa.getNumero());
			
			if (empresa.getComplemento() != null){
				preparedStatement.setString(8, empresa.getComplemento());
			}else{
				preparedStatement.setNull(8, Types.NULL);
			}
			
			preparedStatement.setString(9, empresa.getCep());
			preparedStatement.setString(10, empresa.getCidade());
			preparedStatement.setString(11, empresa.getEstado());
			
			preparedStatement.executeUpdate();
			
			return true;
			
		}catch(SQLException erro){
			System.out.println(erro.getMessage());
		}finally {
			
			try{
				preparedStatement.close();
				//System.out.println("\nStatement fechado");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("\n Erro ao fechar o objeto statement.");
			}
		}
		
		return false;
	}
	
	
}
